#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <dlfcn.h>
#include <pthread.h>
#include <linux/fb.h>

int main(int argc, char const *argv[])
{
    int ret = execlp("ps", "ps", "-l", NULL);
    // if(ret == -1)
    // {
    //     perror("exec 失败");
    //     exit(0);
    // }

    // // 资源暂不可得 --> 挂起（睡眠）
    // int n;
    // scanf("%d", &n); // 阻塞


    // // 主动进入挂起（睡眠）
    // sleep(100);

    // for(int i=0;;i++)
    // {
    //     fprintf(stderr, "%d", i);
    //     usleep(1000);
    // }
    // int n = 100;
    // char *p = calloc(1, 20);
    // strcpy(p, "abcd");
    // printf("yueqian.com\n");

    // pid_t a = fork(); // 刀叉
    // printf("abcd\n");

    // 并发运行
    // if(a > 0) // 父进程
    // {
    //     printf("PID: %d, PPID: %d\n", getpid(), getppid());
    //     n++;
    //     printf("n: %d\n", n);
    //     // 既不退出，也不回收子进程的资源
    //     pause(); // 暂停
    // }

    // if(a == 0) // 子进程（僵尸）
    // {
    //     printf("PID: %d, PPID: %d\n", getpid(), getppid());
    //     sleep(1); // 等待父进程改完n再输出n，印证父子进程的内存空间的独立性
    //     printf("n: %d\n", n);
    //     printf("p: %s\n", p);
    // }

    return 0;
}
